
#include <Arduino.h>

#ifndef __ps2_client_H__
#define __ps2_client_H__

class PS2_Client {
protected:
    unsigned char PS2_TXBuffer[256]; // 发送数据缓冲
    unsigned char PS2_TX_S;          // 发送缓冲开始位置
    unsigned char PS2_TX_E;          // 发送缓冲结束位置
    unsigned char PS2_RXBuffer;      // 接收数据缓冲

    int _pinClk = 0;
    int _pinD = 0;

    int send_bit(int bit);
    int read_bit(uint8_t *bit);
    int sendByte(uint8_t data);
    int readIntoBuffer(void);

public:
    void init(int pinClk, int pinD);
    void sendBuffer(); // 将缓存中的数据全部发送出去
    virtual void readAndExec() = 0;
    virtual void resetDevice() = 0;
};

#endif